package com.cskaoyan.javase.oop3._2inner._2static._0introduction;

/**
 * 静态内部类的语法,可以看成在成员内部类的基础上加一个static
 * 语法是:
 * //外围（普通）类
 * [访问权限修饰符] class EnclosedClazz{
 * // 静态内部类访问权限修饰符，有四个，和普通成员一样
 *   [访问权限修饰符] static class NestedClazz{
 *  }
 * }
 * 自身特点
 * 依然主要从以下几个角度分析：
 *      1.访问权限修饰符
 *          和成员内部类一样,四种访问级别.
 *      2.成员特点
 *          静态内部类的特点
 *          只需要搞清楚这句话:
 *          静态内部类和外围类就是独立的两个类，只不过静态内部类借用外围类来保护自己罢了。
 *          既然本身就是独立的一个类,那么它的成员特点和普通类没有任何区别.
 *
 * 继承和实现
 *      可以继承,可以实现外部类和外部接口
 *      但是和成员内部类不一样的地方在于
 *      如果继承一个内部类,那么该内部类必须也是静态内部类
 *          不能继承成员内部类
 *
 * @since 09:35
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
    }

}

class EnclosedClazz {
    static class A {
    }

    class B {
    }

    static class NestedClazz extends A implements IA {
        int a = 10;
        private int b = 20;
        static int c = 30;
        static final int D = 40;

        public void testNested() {
        }

        public static void testNestedStatic() {
        }

        public NestedClazz() {
        }

        {
        }

        static {
        }
    }
}

interface IA {
}